/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package filters


import sige.Grupo
import sige.Usuario
import sige.Permissoes
/**
 *
 * @author igo
 */
class LoginFilters {
    def filters ={
        login(controller: '*', action: '*') {
            before = {
                
                if(!controllerName && !actionName){
                    return true
                }
                
                //checando login
                if( !session.usuario?.id && controllerName != "login"){
                    session.controlador = controllerName
                    session.acao = actionName
                    session.parametros = params
                    
                    redirect(controller:'login', action:'login')
                    return false
                }
                
                //checando permissoes
                if( controllerName != "login" ){
                    Grupo group
                    try{
                        group = Grupo.get(session.grupo.id)
                    }catch(e){
                        println "grupo não encontrado"
                        flash.message = "default.permission.denied"
                        redirect(uri: "/")
                        return false
                    }
                    for(p in group.permissoes){
                        if(p.controlador == controllerName){
                            return true
                        }
                    }
                    println "permissão não encontrada"
                    flash.message = "default.permission.denied"
                    redirect(uri: "/")
                    return false
                }
                
                return true
            }
        }
    }
}
